package com.demo.handler;

import com.baomidou.mybatisplus.core.handlers.MetaObjectHandler;
import lombok.extern.slf4j.Slf4j;
import org.apache.ibatis.reflection.MetaObject;
import org.springframework.stereotype.Component;

import java.util.Date;

/**
 * @author chenyuan
 * <p>
 * 实体类中创建、更新时间的自动填充策略的处理器
 * <p>
 * 需要实现 MetaObjectHandler 接口
 */
//配置注解
@Slf4j
//加入容器
@Component
public class DateHandler implements MetaObjectHandler {
	/**
	 * 插入时填充策略
	 *
	 * @param metaObject
	 */
	@Override
	public void insertFill(MetaObject metaObject) {
		// 打印日志
		log.info("开始插入------");
		// 设置字段的值
		/** 三个参数
		 * String fieldName ：需要处理的字段名
		 * Object fieldVal : 想要插入的字段值
		 * MetaObject metaObject ：给哪个数据处理
		 */
		this.setFieldValByName("createTime", new Date(), metaObject);
		this.setFieldValByName("updateTime", new Date(), metaObject);
	}

	/**
	 * 更新时填充策略
	 *
	 * @param metaObject
	 */
	@Override
	public void updateFill(MetaObject metaObject) {
		// 打印日志
		log.info("开始更新++++++");
		// 设置字段的值
		this.setFieldValByName("updateTime", new Date(), metaObject);
	}
}
